package com.afiorenza;

import java.util.Comparator;

abstract class Persona implements Comparable<Persona>, Comparator<Persona> {

	private String nombre;

	private Integer dni;

	protected Persona() {
		super();
	}

	protected Persona(String nombre, Integer dni) {
		super();
		this.nombre = nombre;
		this.dni = dni;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Integer getDni() {
		return dni;
	}

	public void setDni(Integer dni) {
		this.dni = dni;
	}

	@Override
	public int compareTo(Persona o) {
		if (o.getDni() > this.dni)
			return 0;
		return 1;
	}

	@Override
	public boolean equals(Object obj) {
		if (!(obj instanceof Persona))
			return false;
		Persona p = (Persona) obj;
		if (p.hashCode() == this.hashCode())
			return true;
		return false;
	}

	@Override
	public int hashCode() {
		return dni.hashCode() + nombre.hashCode();
	}

	@Override
	public int compare(Persona o1, Persona o2) {
		if (o1.hashCode() > o2.hashCode())
			return 0;
		return 1;
	}
	
}
